using imitateMacQQ.WebApi.Domain.Friend.module.Entity;
using imitateMacQQ.WebApi.Domain.Friend.module.Entity.dao;
using imitateMacQQ.WebApi.Domain.Friend.module.Entity.dto;
using imitateMacQQ.WebApi.Domain.Request.utils;

namespace imitateMacQQ.WebApi.Domain.Friend.module.Interface;

public interface IFriend
{
    /// <summary>
    /// 获取好友列表
    /// </summary>
    /// <param name="accountSelf">获取者账号</param>
    /// <returns>账户列表对象</returns>
    public Request<Domain.Friend.module.Entity.Friend[]> GetFriendList(
        string accountSelf);

    /// <summary>
    /// 获取好友列表好友的账户
    /// </summary>
    /// <param name="accountSelf">获取着账户</param>
    /// <returns>账户string列表</returns>
    public Task<Request<string[]>> GetFriendListStr(
        string accountSelf);

    /// <summary>
    /// 好友申请
    /// </summary>
    /// <param name="friend">搭建好友关系双方账号</param>
    /// <returns></returns>
    public Request<bool> AskFriendRelation(
        AskFriend friend);

    /// <summary>
    /// 好友申请回执
    /// </summary>
    /// <param name="dto">是否同意建立好友关系</param>
    /// <returns></returns>
    public Request<bool> AskResult(AskFriendResult dto);

    /// <summary>
    /// 获取是否是好友状态
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    public Task<Request<bool>> AskRelation(Relation dto);

    /// <summary>
    /// 获取请求列表
    /// </summary>
    /// <param name="dto"></param>
    /// <returns></returns>
    public Task<Request<RequestList[]>> GetRequestList(string dto);
}